package day20171229;

import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class FinalAssignment {
    public static void main(String[] args) {

        while (true) {


            String pass = "123";
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入密码：");
            String passWord = sc.nextLine();
            if (passWord.equals(pass)) {
                System.out.println("验证成功！");


                String fileName = null;
                String fileSno = null;

                //存学号的文件的路径
                String path = "D:\\dev\\sctu-java-2017-1\\1606101052易佳\\src\\day20171229\\sno.txt";

                //List集合用于存文件名中的学号
                Map<String, Integer> map = new HashMap<String, Integer>();

                ArrayList listSno = new ArrayList();
                ArrayList listSname = new ArrayList();
                //读取学号文件
                try {
                    BufferedReader reader = new BufferedReader(new FileReader(path));

                    String sno = null;

                    //遍历每一行，存入Map中
                    while (!((sno = reader.readLine()) == null)) {
                        System.out.println("已读到学号：" + sno);
                        map.put(sno, 0);
                    }


                    //获取文件目录下的文件
                    File file = new File("D:\\dev\\sctu-java-2017-1\\1606101052易佳\\src\\day20171229\\Files\\");

                    File[] files = file.listFiles();

                    //遍历文件夹下面的每一个文件
                    for (File f : files) {

                        //判断是否是文件
                        if (f.isFile()) {
                            fileName = f.getName();
                            System.out.println("读到的文件：" + fileName);
                        }
                        //获取文件名中的学号
                        //面向对象程序设计Java2016级信本1班1606101052易佳实验1.docx
                        //.*表示一个或多个字符\\d+表示一个或多个数字，()里面是想要的
                        Matcher matcher = Pattern.compile("面向对象程序设计Java2016级信本1班(\\d+)(.*)实验1.docx")
                                .matcher(fileName);

                        while (matcher.find()) {
                            //得到学号
                            fileSno = matcher.group(1);
                        }


                        listSno.add(fileSno);

                    }
                    //遍历文件夹下面的每一个文件 end

                    //遍历Map

                    //遍历List
                    for (int i = 0; i < listSno.size(); i++) {
                        for (Map.Entry<String, Integer> entry : map.entrySet()) {
//                for (int j= 0;j<map.size();j++) {

                            if (listSno.get(i).equals(entry.getKey())) {
                                if (listSno.get(0).equals(entry.getKey())) {
                                    System.out.println(listSno.get(i) + entry.getKey());
                                }
//                        System.out.println("set");
                                entry.setValue(1);

                            }
                        }
                    }

                    //遍历Map
                    System.out.println("最后结果！");
                    String meijiao = null;
                    for (Map.Entry<String, Integer> entry : map.entrySet()) {
                        if (entry.getValue() == 0){
                            meijiao = entry.getKey();
                        }
                        System.out.println(entry.getKey() + ":" + entry.getValue());
                    }

                    System.out.println("没交的学号："+meijiao);


                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            } else {
                System.out.println("密码错误！");

            }
        }
    }
}
